import { readdirSync, readFileSync } from 'fs'; import micromark from 'micromark'; import { join } from 'path'; import { NavBar } from '../../components/navbar'; import { CenteredPage, PageTitle } from '../../components/page'; import { Vierkant } from '../../components/ui'; export default function Post(props: { post: string; content: string; tags: string; }) { return
{props.post.replace(/_/g, ' ')}
; } function parseTags(fileContent: string) { var fileAsArr = fileContent.split('\n'); var lastLine = fileAsArr[fileAsArr.length - 1]; if (!lastLine.startsWith(';tags:')) { return { tags: [], result: '', }; } var tags = lastLine.replace(';tags:', '').trim().split(' '); fileAsArr.pop(); var result = fileAsArr.join('\n').trim(); return { tags, result }; } export function getStaticProps(props: { params: { post: string; }; }) { var filename = join('news/', props.params.post + '.md'); var filecontent = readFileSync(filename).toString().trim(); var parsed = parseTags(filecontent); var content = micromark(parsed.result); return { props: { post: props.params.post, content, tags: parsed.tags, }, }; } export function getStaticPaths() { var files = readdirSync('news').filter(f => f.endsWith('.md')); return { paths: files.map((f) => { return { params: { post: f.substr(0, f.length - 3), }, }; }), fallback: false, }; }